﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Entidades.Seguridad;
using Entidades.Sistema.Base;
using Entidades.Sistema.Venta;
using Modelo.Sistema.Base;
using Modelo.Sistema.Venta;
using Modelo.Seguridad;
using DevExpress.Web.Mvc;
using System.Threading;

namespace VistaOnlineR1._1.Controllers.Sistema.Produccion
{
    public class EmpleadoProductoController : BaseController
    {
        #region campos
        CatalogoEmpleado _catalogoEmpleado;
        CatalogoProductos _catagloProductos;
        #endregion

        #region Constructors
        public EmpleadoProductoController()
            : this(new CatalogoEmpleado(), new CatalogoProductos())
        {
        }

        public EmpleadoProductoController(CatalogoEmpleado catalogoEmpleado, CatalogoProductos catagloProductos)
        {
            _catalogoEmpleado = catalogoEmpleado;
            _catagloProductos = catagloProductos;
        }
        #endregion

        public ActionResult AsignacionDeProductos()
        {
            ViewData["Empleado"] = _catalogoEmpleado.Listarempleados().Where(x => x.Cargo.HabilitadoProduccion == true).ToList();
            ViewBag.Productos = _catagloProductos.ListarProductos();
            int idEmpleado = _catalogoEmpleado.Listarempleados().First(x => x.Cargo.HabilitadoProduccion == true).IdEmpleado;
            
            return View(_catalogoEmpleado.Listarempleados().FirstOrDefault(x => x.IdEmpleado == idEmpleado));
        }

        [HttpPost, ValidateInput(false)]
        public ActionResult PostAsignacionDeProductos()
        {
            
            int idEmpleado = String.IsNullOrEmpty(Request.Params["lblEmpleado"]) ? -1 : int.Parse(Request.Params["lblEmpleado"]);
            string[] selectedItems = CheckBoxListExtension.GetSelectedValues<string>("lbProducto");
            Empleado emp = _catalogoEmpleado.Listarempleados().FirstOrDefault(x => x.IdEmpleado == idEmpleado);
            emp.Productos.Clear();

            foreach (var item in selectedItems)
            {
                Producto pro = new Producto();
                pro = _catagloProductos.BuscarProducto(Convert.ToInt16(item));
                emp.AgregarProducto(pro);                
            }

            ViewData["Empleado"] = emp.NombreApellido;

            _catalogoEmpleado.ModificarEmpleado(emp);

            return View("AsignacionSuccess");
        }

        public ActionResult AsignacionSuccess()
        {
            return View();
        }

        public ActionResult ListBoxProductos()
        {
            ViewBag.Productos = _catagloProductos.ListarProductos();

            if (DevExpressHelper.IsCallback)
                Thread.Sleep(500);
            int employeeID = !string.IsNullOrEmpty(Request.Params["IdEmpleado"]) ? int.Parse(Request.Params["IdEmpleado"]) : _catalogoEmpleado.Listarempleados().First().IdEmpleado;
            return PartialView("ListBoxProductos", _catalogoEmpleado.Listarempleados().FirstOrDefault(x => x.IdEmpleado == employeeID));
        }

        
    }
}
